        SET ARITHABORT OFF SET ANSI_WARNINGS OFF SET NOCOUNT ON
SELECT  Media       = ASGI.Media,  
Week = CASE WHEN DATEPART(week,ASGI.DateTime) = 1 
				THEN DATEADD(day,-(DATEPART(dayofyear,ASGI.DateTime)-1),DATEADD(day,DATEDIFF(day,0,ASGI.DateTime),0)) 
				ELSE DATEADD(day,-(DATEPART(weekday,ASGI.DateTime)-1),DATEADD(day,DATEDIFF(day,0,ASGI.DateTime),0)) END,
        Year        = DATEPART(yy, ASGI.DateTime), 
        Month       = DATEPART(mm, ASGI.DateTime), 
        Person.LastName + ', ' + Person.FirstName  as FullName,
     SkillGroupName = ASGI.SGEnterpriseName,
       AgentSkillID = Agent.SkillTargetID,
       SkillGroupID = ASGI.SGSkillTargetID , 
      CallsAnswered = SUM(ISNULL(ASGI.CallsAnswered, 0)), 
       CallsHandled = SUM(ISNULL(ASGI.CallsHandled, 0)),
     AbandRingCalls = SUM(ISNULL(ASGI.AbandonRingCalls, 0)),
 AbandRingCallsTime = SUM(ISNULL(ASGI.AbandonRingTime, 0)),
      RedirectCalls = SUM(ISNULL(ASGI.RedirectNoAnsCalls, 0)), 
  RedirectCallsTime = SUM(ISNULL(ASGI.RedirectNoAnsCallsTime, 0)),
   AbandonHoldCalls = SUM(ISNULL(ASGI.AbandonHoldCalls, 0)),
    TransferInCalls = SUM(ISNULL(ASGI.TransferredInCalls, 0)),
   TransferOutCalls = SUM(ISNULL(ASGI.TransferredOutCalls, 0)),
  ConsultativeCalls = SUM(ISNULL(ASGI.ConsultativeCalls, 0)),
  ConferenceInCalls = SUM(ISNULL(ASGI.ConferencedInCalls, 0)),
 ConferenceOutCalls = SUM(ISNULL(ASGI.ConferencedOutCalls, 0)),
       OutExtnCalls = SUM(ISNULL(ASGI.AgentOutCalls, 0)),
        ShortCalls  = SUM(ISNULL(ASGI.ShortCalls, 0)),
     SupAssistCalls = SUM(ISNULL(ASGI.SupervAssistCalls, 0)),
       BargeInCalls = SUM(ISNULL(ASGI.BargeInCalls, 0)),
     InterceptCalls = SUM(ISNULL(ASGI.InterceptCalls, 0)),
       MonitorCalls = SUM(ISNULL(ASGI.MonitorCalls, 0)),
       WhisperCalls = SUM(ISNULL(ASGI.WhisperCalls, 0)),
EmergencyAssistCalls= SUM(ISNULL(ASGI.EmergencyAssists, 0)),
 SupAssistCallsTime = SUM(ISNULL(ASGI.SupervAssistCallsTime, 0)),
AgentOutCallsOnHold = SUM(ISNULL(ASGI.AgentOutCallsOnHold, 0)),
AgentOutCallsOnHoldTime= SUM(ISNULL(ASGI.AgentOutCallsOnHoldTime, 0)),
      InCallsOnHold = SUM(ISNULL(ASGI.IncomingCallsOnHold, 0)),
  InCallsOnHoldTime = SUM(ISNULL(ASGI.IncomingCallsOnHoldTime, 0)),
     IntCallsOnHold = SUM(ISNULL(ASGI.InternalCallsOnHold, 0)),
 IntCallsOnHoldTime = SUM(ISNULL(ASGI.InternalCallsOnHoldTime, 0)),
        TalkTime    = sum(isnull(ASGI.TalkInTime,0)) + 
                      sum(isnull(ASGI.TalkOutTime,0)) +
                      sum(isnull(ASGI.TalkOtherTime,0)) + 
                      sum(isnull(ASGI.TalkAutoOutTime,0)) +
                      sum(isnull(ASGI.TalkPreviewTime,0)) + 
                      sum(isnull(ASGI.TalkReserveTime,0)),
   HandledCallsTime = SUM(ISNULL(ASGI.HandledCallsTime, 0)),
       LoggedOnTime = SUM(ISNULL(ASGI.LoggedOnTime, 0)),
        HoldTime    = SUM(ISNULL(ASGI.HoldTime, 0)),
       -- AvailTime   = SUM(ISNULL(ASGI.AvailTime, 0)),
       --NotReadyTime = SUM(ISNULL(ASGI.NotReadyTime, 0)),
       ReservedTime = SUM(ISNULL(ASGI.ReservedStateTime, 0)),
        WrapTime    = SUM(ISNULL(ASGI.WorkNotReadyTime + ASGI.WorkReadyTime, 0)),
       --BusyOtherTime = SUM(ISNULL(ASGI.BusyOtherTime, 0)),
     AnswerWaitTime = SUM(ISNULL(ASGI.AnswerWaitTime, 0)),
       AutoOutCalls = SUM(ISNULL(ASGI.AutoOutCalls, 0)),
   AutoOutCallsTime = SUM(ISNULL(ASGI.AutoOutCallsTime, 0)),
AutoOutCallsTalkTime= SUM(ISNULL(ASGI.AutoOutCallsTalkTime, 0)),
 AutoOutCallsOnHold = SUM(ISNULL(ASGI.AutoOutCallsOnHold, 0)),
AutoOutCallsOnHoldTime= SUM(ISNULL(ASGI.AutoOutCallsOnHoldTime, 0)),
       PreviewCalls = SUM(ISNULL(ASGI.PreviewCalls, 0)),
   PreviewCallsTime = SUM(ISNULL(ASGI.PreviewCallsTime, 0)),
PreviewCallsTalkTime= SUM(ISNULL(ASGI.PreviewCallsTalkTime, 0)),
 PreviewCallsOnHold = SUM(ISNULL(ASGI.PreviewCallsOnHold, 0)),
PreviewCallsOnHoldTime= SUM(ISNULL(ASGI.PreviewCallsOnHoldTime, 0)),
       ReserveCalls = SUM(ISNULL(ASGI.ReserveCalls, 0)),
   ReserveCallsTime = SUM(ISNULL(ASGI.ReserveCallsTime, 0)),
ReserveCallsTalkTime= SUM(ISNULL(ASGI.ReserveCallsTalkTime, 0)),
 ReserveCallsOnHold = SUM(ISNULL(ASGI.ReserveCallsOnHold, 0)),
ReserveCallsOnHoldTime= SUM(ISNULL(ASGI.ReserveCallsOnHoldTime, 0)),
    TalkAutoOutTime = SUM(ISNULL(ASGI.TalkAutoOutTime, 0)),
    TalkPreviewTime = SUM(ISNULL(ASGI.TalkPreviewTime, 0)),
    TalkReserveTime = SUM(ISNULL(ASGI.TalkReserveTime, 0)),
AgentOutCallsTime= SUM(ISNULL(ASGI.AgentOutCallsTime, 0)),
AgentOutCallsTalkTime= SUM(ISNULL(ASGI.AgentOutCallsTalkTime, 0)),
AgentTerminatedCalls= SUM(ISNULL(ASGI.AgentTerminatedCalls, 0)),
   CallbackMessages = SUM(ISNULL(ASGI.CallbackMessages, 0)),
CallbackMessagesTime= SUM(ISNULL(ASGI.CallbackMessagesTime, 0)),
ConsultativeCallsTime= SUM(ISNULL(ASGI.ConsultativeCallsTime, 0)),
ConferencedInCallsTime= SUM(ISNULL(ASGI.ConferencedInCallsTime, 0)),
ConferencedOutCallsTime= SUM(ISNULL(ASGI.ConferencedOutCallsTime, 0)),
HandledCallsTalkTime= SUM(ISNULL(ASGI.HandledCallsTalkTime,  0)),
  InternalCallsRcvd = SUM(ISNULL(ASGI.InternalCallsRcvd, 0)),
InternalCallsRcvdTime= SUM(ISNULL(ASGI.InternalCallsRcvdTime, 0)),
      InternalCalls = SUM(ISNULL(ASGI.InternalCalls, 0)),
  InternalCallsTime = SUM(ISNULL(ASGI.InternalCallsTime, 0)),
TransferredInCallsTime= SUM(ISNULL(ASGI.TransferredInCallsTime, 0)),
      TalkOtherTime = SUM(ISNULL(ASGI.TalkOtherTime, 0)),
        TalkOutTime = SUM(ISNULL(ASGI.TalkOutTime, 0)),
        TimeZone    = MAX(ASGI.TimeZone),
    InterruptedTime = SUM(ISNULL(ASGI.InterruptedTime, 0)),
   WorkNotReadyTime = SUM(ISNULL(ASGI.WorkNotReadyTime, 0)),
      WorkReadyTime = SUM(ISNULL(ASGI.WorkReadyTime, 0)),
NetConsultativeCalls= SUM(ISNULL(ASGI.NetConsultativeCalls, 0)),
NetConsultativeCallsTime= SUM(ISNULL(ASGI.NetConsultativeCallsTime, 0)),
NetConferencedOutCalls= SUM(ISNULL(ASGI.NetConferencedOutCalls, 0)),
NetConfOutCallsTime = SUM(ISNULL(ASGI.NetConfOutCallsTime, 0)),
NetTransferredOutCalls= SUM(ISNULL(ASGI.NetTransferredOutCalls, 0)),
        DbDateTime  = MAX(ASGI.DbDateTime),
  --AgentLoggedOnTime = sum(ISNULL( AI.LoggedOnTime,0)),
     --AgentAvailTime = SUM(ISNULL(AI.AvailTime, 0)),
      --AgentNotReady = SUM(ISNULL(AI.NotReadyTime, 0)) ,
        AHT         = ISNULL(SUM(ASGI.HandledCallsTime) / SUM(ASGI.CallsHandled), 0),
        AHoldT      = ISNULL(SUM(ASGI.IncomingCallsOnHoldTime) / SUM(ASGI.IncomingCallsOnHold), 0),
      -- perActiveTime = ISNULL(sum(isnull(ASGI.TalkInTime,0)) + 
      --                       sum(isnull(ASGI.TalkOutTime,0)) +
      --                       sum(isnull(ASGI.TalkOtherTime,0)) + 
      --                       sum(isnull(ASGI.TalkAutoOutTime,0)) +
      --                       sum(isnull(ASGI.TalkPreviewTime,0)) + 
      --                       sum(isnull(ASGI.TalkReserveTime,0)),0) * 1.0 / 
      --                       SUM(ISNULL(ASGI.LoggedOnTime, 0)),
      -- perHoldTime = ISNULL(SUM(ASGI.HoldTime) * 1.0 /  SUM(ASGI.LoggedOnTime), 0),
      -- perNotActive = ISNULL(SUM(ASGI.AvailTime) * 1.0 / SUM(ASGI.LoggedOnTime), 0),
      -- perNotReady = ISNULL(SUM(ASGI.NotReadyTime) * 1.0 /  SUM(ASGI.LoggedOnTime), 0),
      -- perReserved = ISNULL(SUM(ASGI.ReservedStateTime) * 1.0 / SUM(ASGI.LoggedOnTime), 0),
      -- perWrapup   = ISNULL(SUM(ASGI.WorkNotReadyTime + ASGI.WorkReadyTime) * 1.0 / SUM(ASGI.LoggedOnTime), 0),
      -- perBusyOther = ISNULL(SUM(ASGI.BusyOtherTime)  * 1.0 / SUM(ASGI.LoggedOnTime), 0), 
       TransOut = SUM(ISNULL(ASGI.TransferredOutCalls, 0) + ISNULL(ASGI.NetTransferredOutCalls, 0)),
       Assists = SUM(ISNULL(ASGI.EmergencyAssists, 0) + ISNULL(ASGI.SupervAssistCallsTime, 0))
      -- AACW = ISNULL((SUM(ISNULL(ASGI.WorkNotReadyTime + ASGI.WorkReadyTime, 0))) / SUM(isnull(ASGI.CallsHandled, 0)), 0),
	--perWACW = ISNULL(((sum(isnull(ASGI.TalkPreviewTime,0)) + sum(isnull(ASGI.TalkReserveTime,0))) + (SUM(ISNULL(ASGI.WorkNotReadyTime + ASGI.WorkReadyTime, 0))) + SUM(ISNULL(ASGI.NotReadyTime,0)) )* 1.0 / SUM(ISNULL(ASGI.LoggedOnTime,0)), 0),
	--perWOACW = ISNULL(((sum(isnull(ASGI.TalkPreviewTime,0)) + sum(isnull(ASGI.TalkReserveTime,0))) + (SUM(ISNULL(ASGI.WorkNotReadyTime + ASGI.WorkReadyTime, 0)))  )* 1.0 / SUM(ISNULL(ASGI.LoggedOnTime,0)), 0) 
  FROM Agent (nolock),   
(Select Agent_Skill_Group_Interval.*, SGPeripheralID = Skill_Group.PeripheralID, SGEnterpriseName = Skill_Group.EnterpriseName, SGSkillTargetID = Skill_Group.SkillTargetID, Media = Media_Routing_Domain.EnterpriseName, MediaID = Media_Routing_Domain.MRDomainID FROM Skill_Group(nolock), Agent_Skill_Group_Interval(nolock), Media_Routing_Domain(nolock)
	WHERE Skill_Group.SkillTargetID = Agent_Skill_Group_Interval.SkillGroupSkillTargetID
	AND Skill_Group.MRDomainID = Media_Routing_Domain.MRDomainID
    AND (Skill_Group.SkillTargetID NOT IN (SELECT BaseSkillTargetID FROM Skill_Group (nolock) WHERE (Priority > 0) AND (Deleted <> 'Y')))

AND  Agent_Skill_Group_Interval.SkillTargetID  in (11144,12356,13282,14239,14412,16488,8525)
AND Agent_Skill_Group_Interval.DateTime >= '2022-04-03 00:00:00'
AND Agent_Skill_Group_Interval.DateTime < '2022-04-09 23:59:59'


	UNION ALL
		Select Agent_Skill_Group_Interval.*, SGPeripheralID = Skill_Group.PeripheralID, SGEnterpriseName = Precision_Queue.EnterpriseName, SGSkillTargetID = Skill_Group.SkillTargetID, Media = Media_Routing_Domain.EnterpriseName, MediaID = Media_Routing_Domain.MRDomainID 
		FROM Skill_Group (nolock), Agent_Skill_Group_Interval(nolock), Media_Routing_Domain(nolock), Precision_Queue(nolock)
	WHERE Skill_Group.PrecisionQueueID = Agent_Skill_Group_Interval.PrecisionQueueID
	AND Skill_Group.PrecisionQueueID = Precision_Queue.PrecisionQueueID

AND  Agent_Skill_Group_Interval.SkillTargetID  in (11144,12356,13282,14239,14412,16488,8525)
AND Agent_Skill_Group_Interval.DateTime >= '2022-04-03 00:00:00'
AND Agent_Skill_Group_Interval.DateTime < '2022-04-09 23:59:59'

	AND Skill_Group.MRDomainID = Media_Routing_Domain.MRDomainID)ASGI,
       Agent_Interval AI (nolock),
       Person (nolock)
 WHERE Agent.PeripheralID = ASGI.SGPeripheralID
   AND Agent.SkillTargetID = ASGI.SkillTargetID  
   AND Agent.PersonID = Person.PersonID 
   AND Agent.SkillTargetID= AI.SkillTargetID 
   AND ASGI.DateTime = AI.DateTime
AND AI.MRDomainID = ASGI.MediaID
   AND  Agent.SkillTargetID  in (11144,12356,13282,14239,14412,16488,8525)
	 AND AI.DateTime >= '2022-04-03 00:00:00'
	 AND AI.DateTime < '2022-04-09 23:59:59'
 GROUP BY Agent.SkillTargetID,
          ASGI.SGSkillTargetID, 
          Person.LastName,
          Person.FirstName,
          ASGI.SGEnterpriseName,
          ASGI.Media, 
CASE WHEN DATEPART(week,ASGI.DateTime) = 1 
				THEN DATEADD(day,-(DATEPART(dayofyear,ASGI.DateTime)-1),DATEADD(day,DATEDIFF(day,0,ASGI.DateTime),0))
				ELSE DATEADD(day,-(DATEPART(weekday,ASGI.DateTime)-1),DATEADD(day,DATEDIFF(day,0,ASGI.DateTime),0)) END,
          DATEPART(yy, ASGI.DateTime) , 
          DATEPART(mm, ASGI.DateTime) 
 ORDER BY Person.LastName + ', ' + Person.FirstName,
          ASGI.Media,
          Agent.SkillTargetID,
          ASGI.SGEnterpriseName
